home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Caml Light 0.61 / Source / src / compiler / lambda.ml < prev    next >
Encoding:
Text File  |  1993-09-24  |  857 b   |  32 lines  |  [TEXT/MPS ]

  1. (* The intermediate language: extended lambda-calculus in de
  2.     Bruijn's notation *)
  3.  
  4. #open "const";;
  5. #open "prim";;
  6.  
  7. type lambda =
  8.     Lvar of int
  9.   | Lconst of struct_constant
  10.   | Lapply of lambda * lambda list
  11.   | Lfunction of lambda
  12.   | Llet of lambda list * lambda
  13.   | Lletrec of (lambda * int) list * lambda
  14.   | Lprim of primitive * lambda list
  15.   | Lcond of lambda * (atomic_constant * lambda) list
  16.   | Lswitch of int * lambda * (constr_tag * lambda) list
  17.   | Lstaticfail
  18.   | Lstatichandle of lambda * lambda
  19.   | Lhandle of lambda * lambda
  20.   | Lifthenelse of lambda * lambda * lambda
  21.   | Lsequence of lambda * lambda
  22.   | Lwhile of lambda * lambda
  23.   | Lfor of lambda * lambda * bool * lambda
  24.   | Lsequand of lambda * lambda
  25.   | Lsequor of lambda * lambda
  26.   | Lshared of lambda * int ref
  27. ;;
  28.  
  29. let share_lambda l =
  30.   Lshared(l, ref instruct__Nolabel)
  31. ;;
  32.